package com.lmh.netty;

import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.nio.NioEventLoopGroup;

public class DiscardServer {

	/**
	 * 端口号
	 */
	private int port;

	public DiscardServer(int port) {
		super();
		this.port=port;
	}
	
	public void run() throws Exception{
		/***
         * NioEventLoopGroup 是用来处理I/O操作的多线程事件循环器，
         * Netty提供了许多不同的EventLoopGroup的实现用来处理不同传输协议。 在这个例子中我们实现了一个服务端的应用，
         * 因此会有2个NioEventLoopGroup会被使用。 第一个经常被叫做‘master’，用来接收进来的连接。
         * 第二个经常被叫做‘worker’，用来处理已经被接收的连接， 一旦‘master’接收到连接，就会把连接信息注册到‘worker’上。
         * 如何知道多少个线程已经被使用，如何映射到已经创建的Channels上都需要依赖于EventLoopGroup的实现，
         * 并且可以通过构造函数来配置他们的关系。
         */
		NioEventLoopGroup masterGroup = new NioEventLoopGroup();
		NioEventLoopGroup workerGroup = new NioEventLoopGroup();
		System.out.println("准备运行端口："+port);
		try {
			/*
			 * ServerBootstrap是一个启动NIO服务的辅助启动类，可以在这个服务中直接使用Channel
			 */
			ServerBootstrap serverBootstrap = new ServerBootstrap();
			/*
			 * 必须设置，如果没有将抛出java.lang.IllegalStateException: group not set异常
			 */
			serverBootstrap = serverBootstrap.group(masterGroup, workerGroup);
			
		} catch (Exception e) {
			
		}
	}
	
}
